package com.hnzbxy.api.biz.vo;

import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 班级信息VO（包含关联名称字段）
 */
@Data
public class ClassInfoVO {

    /**
     * 班级ID（编辑时用）
     */
    private Long id;

    /**
     * 班级名称（必填）
     */
    @NotBlank(message = "班级名称不能为空")
    @Length(max = 50, message = "班级名称最长不能超过50个字符")
    private String className;

    /**
     * 是否合班（0=非合班，1=合班，必填）
     */
    @NotNull(message = "请选择是否合班")
    private Integer isCombined;

    /**
     * 合班关联班级ID组（非合班可空）
     */
    private String combinedClassIds;

    /**
     * 合班关联班级名称组（逗号分隔，查询结果字段）
     */
    private String combinedClassNames;  // 新增

    /**
     * 开班时间（必填）
     */
    @NotNull(message = "请选择开班时间")
    private Date startTime;

    /**
     * S1阶段升学时间（可空）
     */
    private Date s1UpgradeTime;

    /**
     * S2阶段升学时间（可空）
     */
    private Date s2UpgradeTime;

    /**
     * Y1阶段升学时间（可空）
     */
    private Date y1UpgradeTime;

    /**
     * 毕业时间（可空）
     */
    private Date graduationTime;

    /**
     * 历任教员ID组（可空，逗号分隔）
     */
    private String teacherIds;

    /**
     * 历任教员姓名组（逗号分隔，查询结果字段）
     */
    private String teacherNames;  // 新增

    /**
     * 历任班主任ID组（可空，逗号分隔）
     */
    private String classAdvisorIds;

    /**
     * 历任班主任姓名组（逗号分隔，查询结果字段）
     */
    private String classAdvisorNames;  // 新增

    /**
     * 当前班主任ID（可空，关联班主任表）
     */
    private Long currentCaId;

    /**
     * 当前班主任姓名（查询结果字段）
     */
    private String currentCaName;  // 新增

    /**
     * 当前教员ID（可空，关联教员表）
     */
    private Long currentTcId;

    /**
     * 当前教员姓名（查询结果字段）
     */
    private String currentTcName;  // 新增

    /**
     * 所属年级（必填，如“S1”“S2”）
     */
    @NotBlank(message = "请选择所属年级")
    private String grade;

    /**
     * 班级状态（0=未开班，1=在读，2=毕业，必填）
     */
    @NotNull(message = "请选择班级状态")
    private Integer classStatus;

    /**
     * 班级备注（可空）
     */
    @Length(max = 500, message = "备注最长不能超过500个字符")
    private String remark;
}